Recently, software defined networking (SDN) is attracting attention in the field of networks. SDN is a technology for controlling the behavior of the entire network by software. An OpenFlow technology is attracting attention as a standard to achieve SDN.
The OpenFlow network includes an “OpenFlow switch” (OF-SW: it may be written as “switch” below) having a data transfer function and an “OpenFlow controller” (OFC: it may be written as “controller” below) that manages path control, where the controller and the switch perform communication according to an “OpenFlow protocol”.
Each switch includes a flow table in which information to decide operation (action) with respect to a packet inputted therein is stored. In OpenFlow, a combination of “rule (Match)”, “action (Action)” and “statistical information (Statistics)” is called a “flow”. The flow table is a set of entries (hereafter referred to as “flow entry”) in which information on the flow is stored.
The information on the flow (flow entry) is generated by the controller and transmitted to each switch by the use of “OpenFlow protocol”. Each switch stores the flow received from the controller in the flow table. Thus, the controller performs uniform management of the flow table which each switch under the control of the controller itself has.
For more information, see Japanese Laid-open Patent Publication No. 2008-167340, Japanese Laid-open Patent Publication No. 2013-21678, Japanese Laid-open Patent Publication No. 10-290232, Japanese Laid-open Patent Publication No. 2000-253058, and International Publication Pamphlet No. WO2011/132568.
The scalability of the OpenFlow network depends on the throughput of the controller and the number of flow entries that can be registered in the flow table which each switch has. The upper limit of the number of flow entries that can be registered in the flow table is defined by the capacity of a memory installed in the switch.
Therefore, when generating multiple flow entries to be transmitted to the switch, the controller performs integration of the flow entries as follows. That is, the controller refers to parameters included in each flow entry and creates an integration rule in which the number of flow entries after integration becomes the smallest.
Next, according to the integration rule, the controller merges two or more flow entries into one integration entry by an irreversible technique. Further, the controller sends the integration entry and a non-integration entry (in a case where the non-integration entry exists) to the switch. Afterward, in a case where a new flow entry (related to addition) is created, the controller determines whether the additional flow entry can be integrated according to the integration rule, and transmits the additional flow entry to the switch in a case where the integration is difficult.
The above-mentioned controller has the following problem. That is, it is assumed that the parameters used in the above-mentioned integration rule include parameter “A”. In this assumption, in a case where the value of parameter “A” in the additional entry and the value of parameter “A” in the above-mentioned integration entry are different, it is difficult to integrate the additional entry into the integration entry. Therefore, every time an additional entry with parameter “A” of a different value is generated, there may occur a case where the number of flow entries held in the switch increases.
The above-mentioned problem is caused by the following reason. That is, the entry integration is performed to reduce the data size of the table. Therefore, when the entry integration is performed, an entry before integration is discarded (deleted). According to such an idea, the controller does not hold the flow entry before integration. Thus, since the flow entry before integration does not exist, the integration rule is not changed even if the number of flow entries increases.